﻿// owner 蒋家伟

#pragma once

// qt
#include <QtWidgets>
#include <QStorageInfo>
#include <QString>
// jsdk
#include "IStorageWidget.h"
#include "ResourceManagerWidget.h"
#include "ProgressBar.h"
#include "WeakPtr.h"

class QLabel;
namespace jsdk
{
    class StorageWidget : public QWidget, public IStorageWidget
    {
        Q_OBJECT
    public:
        static OwnerPtr<StorageWidget> create(const std::wstring& rootFilePath, bool isOnlyDisplayDir);
    private:
        // 继承IStorageWidget
        virtual void show() override;
        virtual const QWidget* getQWidget() const override { return this; };
        virtual QWidget* getQWidget() override { return this; };

        // owner
        void updateStoragePresent();

    private:
        StorageWidget(const std::wstring& rootFilePath, bool isOnlyDisplayDir);

    private:
        WeakPtr<ResourceManagerWidget> m_wpResourceManagerWidget = nullptr; // 加入布局后，内存交给了qt管理，因此使用weakptr
        WeakPtr<ProgressBar> m_wpProgressBar = nullptr;                     // 百分比占用
        QLabel* m_pTotalStorages = nullptr;                                 // 总内存
        QLabel* m_pUserdStorages = nullptr;                                 // 使用部分内存
        QStorageInfo m_storageInfo;
        QString m_storageRootPath;
    };
}
